import { message } from "antd";
import axios from "axios";
import history from "./history";
import { getToken, removeToken } from "./storage";

// 创建axios实例
export const baseURL = 'http://geek.itheima.net/v1_0/'
const instance = axios.create({
  baseURL,
  timeout: 5000
})
// 添加请求拦截器
instance.interceptors.request.use(function (config) {
  // 在发送请求之前做些什么
  // 设置请求拦截器，请求的时候带着token
  const token = getToken()
  if (token) {
    config.headers.Authorization = `Bearer ${token}`
  }
  return config;
}, function (error) {
  // 对请求错误做些什么
  return Promise.reject(error);
});

// 添加响应拦截器
instance.interceptors.response.use(function (response) {
  // 主要是在相应拦截器里解开axios的数据嵌套
  return response.data;
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  // console.log(error);
  // 对请求超时的处理
  if (!error.response.status) {
    // 请求超时
    message.error('网络繁忙，请稍后重试')
    return Promise.reject('网络繁忙，请稍后重试')
  }
  if (error.response.status === 401) {
    // 用户未认证的错误
    // 首先要清除token
    removeToken()
    // 2. 消息提示
    message.warning('登录过期，请重新登录', 1)
    // 3. 跳转到登录页
    history.push('/login')
  }
  return Promise.reject(error);
});

export default instance